package com.draven.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.draven.entity.NoteCategory;

import java.util.List;

/**
 * 笔记分类服务接口
 */
public interface NoteCategoryService {

    /**
     * 添加分类
     *
     * @param userId 用户ID
     * @param name   分类名称
     * @param sort   排序
     * @param icon   图标
     * @return ID
     */
    Long add(Long userId, String name, Integer sort, String icon);

    /**
     * 添加分类（使用实体类）
     *
     * @param category 分类实体
     * @return ID
     */
    Long add(NoteCategory category);

    /**
     * 修改分类
     *
     * @param id     ID
     * @param userId 用户ID
     * @param name   分类名称
     * @param sort   排序
     * @param icon   图标
     */
    void update(Long id, Long userId, String name, Integer sort, String icon);

    /**
     * 修改分类（使用实体类）
     *
     * @param category 分类实体
     */
    void update(NoteCategory category);

    /**
     * 删除分类
     *
     * @param id     ID
     * @param userId 用户ID
     */
    void delete(Long id, Long userId);

    /**
     * 获取分类详情
     *
     * @param id     ID
     * @param userId 用户ID
     * @return 分类信息
     */
    NoteCategory getDetail(Long id, Long userId);

    /**
     * 获取用户的所有分类
     *
     * @param userId 用户ID
     * @return 分类列表
     */
    List<NoteCategory> listByUserId(Long userId);

    /**
     * 分页查询分类
     *
     * @param userId   用户ID
     * @param name     分类名称
     * @param pageNum  页码
     * @param pageSize 每页数量
     * @return 分页结果
     */
    Page<NoteCategory> page(Long userId, String name, Integer pageNum, Integer pageSize);
} 